mysql用户权限配置
有什么不对的地方请各位大神多多指教!!!
1,查看用户表
$ mysql
$ select User,Password,host from mysql.user;
User: 用户名
Password:密码(加密)
host:连接ip
2,开放远程连接
$ vim /etc/mysql/mariadb.conf.d/50-server.cnf
然后注释:
# bind-address = 127.0.0.1
然后重启mysql-server
$ service mysql restart
3,创建用户;
命令:
CREATE USER 'username'@'host' IDENTIFIED BY 'password'
说明:
- username: 你要创建的用户名;
- host:指定该用户在哪个主机上可以登陆,如果是本地用户可以使用localhost;如果你想任意远程主机都可以登陆,可以使用通配符%;
- password:用户的登陆登陆密码,如果密码为空,用户登陆不需要密码;
例子:
CREATE USER 'pig'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.11' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';
4,用户授权
命令:
CRANT privileges ON databasenmae.tablename TO 'username'@'host'
说明:
- privileges:用户操作权限,如:select,insert,update等,如果要赋予全部权限则使用all;
- databasename:数据库名,如果所有的库,可以用*
- tablename:表名,如果所有的表可以用*
例如:
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
注意:
以上命令赋予用户的权限不能为其他用户开通该权限;如果让该用户的权限可以为其他用户开通,则需要以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
5,设置密码或者更改用户密码
命令:
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
# 如果是当前登陆用户用
SET PASSWORD = PASSWORD('newpassword')
例子:
SET PASSWORD FOR 'pig'@'%' = PASSWORD('1234567');
6,撤销用户权限
命令:
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
说明:
- privileges:用户操作权限,如:select,insert,update等,如果要赋予全部权限则使用all;
- databasename:数据库名,如果所有的库,可以用*
- tablename:表名,如果所有的表可以用*
例子:
REVOKE SELECT ON *.* FROM 'pig'@'%';
注意:
假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%', 则在使用REVOKE SELECT ON . FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON . TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select 权限.
具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看.
7,删除用户
命令:
DROP USER 'username'@'host';
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。